[INFO] cloning repository https://github.com/redox-os/ion
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/redox-os/ion" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fredox-os%2Fion", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fredox-os%2Fion'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1440704f7456fa4c9f873b7b17dd4f0369b0c4ab
[INFO] fixing redox-os/ion against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fredox-os%2Fion" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/redox-os/ion
[INFO] removed 0 missing examples
[INFO] finished tweaking git repo https://github.com/redox-os/ion
[INFO] tweaked toml for git repo https://github.com/redox-os/ion written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/redox-os/ion on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/redox-os/ion already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 07709c9708b60d39fdee0a1adda575ce3cb3a59a9479f5428278a53680eb08eb
[INFO] running `Command { std: "docker" "start" "07709c9708b60d39fdee0a1adda575ce3cb3a59a9479f5428278a53680eb08eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "07709c9708b60d39fdee0a1adda575ce3cb3a59a9479f5428278a53680eb08eb" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "07709c9708b60d39fdee0a1adda575ce3cb3a59a9479f5428278a53680eb08eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "07709c9708b60d39fdee0a1adda575ce3cb3a59a9479f5428278a53680eb08eb" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating members/builtins-proc/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating members/ranges/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating members/scopes-rs/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating members/types-rs/Cargo.toml from 2018 edition to 2021
[INFO] [stderr] note: Switching to Edition 2021 will enable the use of the version 2 feature resolver in Cargo.
[INFO] [stderr] This may cause some dependencies to be built with fewer features enabled than previously.
[INFO] [stderr] More information about the resolver changes may be found at https://doc.rust-lang.org/nightly/edition-guide/rust-2021/default-cargo-resolver.html
[INFO] [stderr] When building the following dependencies, the given features will no longer be used:
[INFO] [stderr] 
[INFO] [stderr]   getrandom v0.2.15 removed features: std
[INFO] [stderr]   num-traits v0.2.19 removed features: default
[INFO] [stderr]   syn v1.0.109 removed features: visit-mut
[INFO] [stderr]   syn v2.0.100 (as host dependency) removed features: extra-traits, full, visit, visit-mut
[INFO] [stderr] 
[INFO] [stderr] The following differences only apply when building with dev-dependencies:
[INFO] [stderr] 
[INFO] [stderr]   getrandom v0.2.15 (as host dependency) removed features: std
[INFO] [stderr]   syn v2.0.100 (as host dependency) removed features: extra-traits, visit, visit-mut
[INFO] [stderr] 
[INFO] [stderr]    Compiling libc v0.2.171
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling strsim v0.9.3
[INFO] [stderr]    Compiling zerocopy v0.8.24
[INFO] [stderr]    Compiling proc-macro2 v1.0.94
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling lexical-core v0.7.6
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]     Checking smallvec v1.15.0
[INFO] [stderr]    Compiling cc v1.2.19
[INFO] [stderr]     Checking vte v0.14.1
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling auto_enums_derive v0.7.12
[INFO] [stderr]     Checking vec_map v0.8.2
[INFO] [stderr]     Checking numtoa v0.2.4
[INFO] [stderr]     Checking regex-syntax v0.8.5
[INFO] [stderr]     Checking strip-ansi-escapes v0.2.1
[INFO] [stderr]     Checking itertools v0.9.0
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking bytecount v0.6.8
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]    Compiling ion-shell v1.0.0-alpha (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating build.rs from 2018 edition to 2021
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking textwrap v0.11.0
[INFO] [stderr]     Checking xdg v2.5.2
[INFO] [stderr]     Checking scopes v0.1.0 (/opt/rustwide/workdir/members/scopes-rs)
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking unicode-ident v1.0.18
[INFO] [stderr]     Checking buf_read_splitter v0.4.1
[INFO] [stderr]     Checking permutate v0.3.2
[INFO] [stderr]    Migrating members/scopes-rs/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking glob v0.3.2
[INFO] [stderr]     Checking ion-ranges v0.1.0 (/opt/rustwide/workdir/members/ranges)
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Migrating members/ranges/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking plotters-svg v0.3.7
[INFO] [stderr]     Checking csv-core v0.1.12
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking sdd v3.0.8
[INFO] [stderr]     Checking half v1.8.3
[INFO] [stderr]     Checking oorandom v11.1.5
[INFO] [stderr]    Compiling syn v2.0.100
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking scc v2.3.3
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking lexical v5.2.2
[INFO] [stderr]    Compiling decimal v2.1.0
[INFO] [stderr]     Checking num-iter v0.1.45
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking ident_case v1.0.1
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]     Checking getrandom v0.1.16
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking termion v4.0.5
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking clap v2.34.0
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking uuid v0.8.2
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking redox_liner v0.5.3 (https://gitlab.redox-os.org/redox-os/liner#f3fb3b75)
[INFO] [stderr]     Checking small v0.1.0 (https://gitlab.redox-os.org/redox-os/small#4374ae30)
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking types-rs v0.1.0 (/opt/rustwide/workdir/members/types-rs)
[INFO] [stderr]    Migrating members/types-rs/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking object-pool v0.6.0
[INFO] [stderr]     Checking mktemp v0.4.1
[INFO] [stderr]     Checking num v0.4.3
[INFO] [stderr]     Checking users v0.10.0
[INFO] [stderr]     Checking nix v0.23.1 (https://github.com/nix-rust/nix.git?rev=ff6f8b8a#ff6f8b8a)
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking csv v1.3.1
[INFO] [stderr]     Checking serde_cbor v0.11.2
[INFO] [stderr]     Checking criterion-plot v0.4.5
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking calculate v0.7.0 (https://gitlab.redox-os.org/redox-os/calc?rev=d2719efb67ab38c4c33ab3590822114453960da5#d2719efb)
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking darling_core v0.10.2
[INFO] [stderr]    Compiling derive_utils v0.11.2
[INFO] [stderr]    Compiling auto_enums_core v0.7.12
[INFO] [stderr]    Compiling darling_macro v0.10.2
[INFO] [stderr]     Checking auto_enums v0.7.12
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling serial_test_derive v3.2.0
[INFO] [stderr]    Compiling darling v0.10.2
[INFO] [stderr]    Compiling builtins-proc v0.1.0 (/opt/rustwide/workdir/members/builtins-proc)
[INFO] [stderr]    Migrating members/builtins-proc/src/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking serial_test v3.2.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Migrating src/lib/lib.rs from 2018 edition to 2021
[INFO] [stderr]     Checking criterion v0.3.6
[INFO] [stderr]    Migrating members/builtins-proc/tests/test.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating src/main.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating benches/statement.rs from 2018 edition to 2021
[INFO] [stderr]    Migrating benches/terminator.rs from 2018 edition to 2021
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 47.02s
[INFO] [stderr] crater-edition-check: builtins-proc v0.1.0 (/opt/rustwide/workdir/members/builtins-proc) updating edition from 2018 to 2021
[INFO] [stderr] crater-edition-check: ion-shell v1.0.0-alpha (/opt/rustwide/workdir) updating edition from 2018 to 2021
[INFO] [stderr] crater-edition-check: ion-ranges v0.1.0 (/opt/rustwide/workdir/members/ranges) updating edition from 2018 to 2021
[INFO] [stderr] crater-edition-check: scopes v0.1.0 (/opt/rustwide/workdir/members/scopes-rs) updating edition from 2018 to 2021
[INFO] [stderr] crater-edition-check: types-rs v0.1.0 (/opt/rustwide/workdir/members/types-rs) updating edition from 2018 to 2021
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling syn v2.0.100
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]    Compiling ion-shell v1.0.0-alpha (/opt/rustwide/workdir)
[INFO] [stderr]     Checking types-rs v0.1.0 (/opt/rustwide/workdir/members/types-rs)
[INFO] [stderr]     Checking scopes v0.1.0 (/opt/rustwide/workdir/members/scopes-rs)
[INFO] [stderr]     Checking ion-ranges v0.1.0 (/opt/rustwide/workdir/members/ranges)
[INFO] [stderr]     Checking uuid v0.8.2
[INFO] [stderr]     Checking mktemp v0.4.1
[INFO] [stderr]     Checking darling_core v0.10.2
[INFO] [stderr]    Compiling derive_utils v0.11.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling serial_test_derive v3.2.0
[INFO] [stderr]     Checking serial_test v3.2.0
[INFO] [stderr]    Compiling auto_enums_core v0.7.12
[INFO] [stderr]    Compiling auto_enums_derive v0.7.12
[INFO] [stderr]     Checking auto_enums v0.7.12
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling darling_macro v0.10.2
[INFO] [stderr]    Compiling darling v0.10.2
[INFO] [stderr]    Compiling builtins-proc v0.1.0 (/opt/rustwide/workdir/members/builtins-proc)
[INFO] [stdout] warning: unexpected `cfg` condition name: `fuzzing`
[INFO] [stdout]   --> src/lib/parser/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | #[cfg(fuzzing)]
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: expected names are: `docsrs`, `feature`, and `test` and 32 more
[INFO] [stdout]    = help: consider using a Cargo feature instead
[INFO] [stdout]    = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]             [lints.rust]
[INFO] [stdout]             unexpected_cfgs = { level = "warn", check-cfg = ['cfg(fuzzing)'] }
[INFO] [stdout]    = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(fuzzing)");` to the top of the `build.rs`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking criterion v0.3.6
[INFO] [stdout] warning: unexpected `cfg` condition name: `fuzzing`
[INFO] [stdout]   --> src/lib/parser/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | #[cfg(fuzzing)]
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: expected names are: `docsrs`, `feature`, and `test` and 32 more
[INFO] [stdout]    = help: consider using a Cargo feature instead
[INFO] [stdout]    = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]             [lints.rust]
[INFO] [stdout]             unexpected_cfgs = { level = "warn", check-cfg = ['cfg(fuzzing)'] }
[INFO] [stdout]    = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(fuzzing)");` to the top of the `build.rs`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 08s
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating members/builtins-proc/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating members/ranges/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating members/scopes-rs/Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Migrating members/types-rs/Cargo.toml from 2018 edition to 2021
[INFO] [stderr] note: Switching to Edition 2021 will enable the use of the version 2 feature resolver in Cargo.
[INFO] [stderr] This may cause some dependencies to be built with fewer features enabled than previously.
[INFO] [stderr] More information about the resolver changes may be found at https://doc.rust-lang.org/nightly/edition-guide/rust-2021/default-cargo-resolver.html
[INFO] [stderr] When building the following dependencies, the given features will no longer be used:
[INFO] [stderr] 
[INFO] [stderr]   getrandom v0.2.15 removed features: std
[INFO] [stderr]   num-traits v0.2.19 removed features: default
[INFO] [stderr]   syn v1.0.109 removed features: visit-mut
[INFO] [stderr]   syn v2.0.100 (as host dependency) removed features: extra-traits, full, visit, visit-mut
[INFO] [stderr] 
[INFO] [stderr] The following differences only apply when building with dev-dependencies:
[INFO] [stderr] 
[INFO] [stderr]   getrandom v0.2.15 (as host dependency) removed features: std
[INFO] [stderr]   syn v2.0.100 (as host dependency) removed features: extra-traits, visit, visit-mut
[INFO] [stderr] 
[INFO] [stderr]     Checking ion-shell v1.0.0-alpha (/opt/rustwide/workdir)
[INFO] [stderr]     Checking types-rs v0.1.0 (/opt/rustwide/workdir/members/types-rs)
[INFO] [stderr]     Checking ion-ranges v0.1.0 (/opt/rustwide/workdir/members/ranges)
[INFO] [stderr]     Checking scopes v0.1.0 (/opt/rustwide/workdir/members/scopes-rs)
[INFO] [stdout] warning: unexpected `cfg` condition name: `fuzzing`
[INFO] [stdout]   --> src/lib/parser/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | #[cfg(fuzzing)]
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: expected names are: `docsrs`, `feature`, and `test` and 32 more
[INFO] [stdout]    = help: consider using a Cargo feature instead
[INFO] [stdout]    = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]             [lints.rust]
[INFO] [stdout]             unexpected_cfgs = { level = "warn", check-cfg = ['cfg(fuzzing)'] }
[INFO] [stdout]    = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(fuzzing)");` to the top of the `build.rs`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating members/types-rs/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]     Checking builtins-proc v0.1.0 (/opt/rustwide/workdir/members/builtins-proc)
[INFO] [stderr]        Fixed members/types-rs/src/math.rs (5 fixes)
[INFO] [stderr]        Fixed members/types-rs/src/types.rs (1 fix)
[INFO] [stderr]        Fixed members/types-rs/src/lib.rs (1 fix)
[INFO] [stderr]        Fixed members/types-rs/src/modification.rs (4 fixes)
[INFO] [stderr]    Migrating src/main.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/binary/mod.rs:216:19
[INFO] [stdout]      |
[INFO] [stdout]  215 |             let mut shell = self.shell.borrow_mut();
[INFO] [stdout]      |                 ---------
[INFO] [stdout]      |                 |
[INFO] [stdout]      |                 `shell` calls a custom destructor
[INFO] [stdout]      |                 `shell` will be dropped later as of Edition 2024
[INFO] [stdout]  216 |             match shell.on_command(cmd.bytes(), true) {
[INFO] [stdout]      |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                   |
[INFO] [stdout]      |                   this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                   up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  250 |         }
[INFO] [stdout]      |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]      |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `shell` invokes this custom destructor
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:2050:0
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]      = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating members/scopes-rs/src/lib.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/main.rs:280:31
[INFO] [stdout]      |
[INFO] [stdout]  280 |             if let Err(err) = shell.execute_command(&mut reader) {
[INFO] [stdout]      |                        ---    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                        |      |
[INFO] [stdout]      |                        |      this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                        |      up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]      |                        `err` calls a custom destructor
[INFO] [stdout]      |                        `err` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  283 |         }
[INFO] [stdout]      |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]      |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `err` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `err` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: errors present after applying fixes to crate `ion`
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]     --> src/binary/mod.rs:221:28
[INFO] [stdout]      |
[INFO] [stdout]  221 |                           if let Some(Value::Function(func)) =
[INFO] [stdout]      |  ____________________________^
[INFO] [stdout]  222 | |                             shell.variables().get("COMMAND_NOT_FOUND").cloned()
[INFO] [stdout]      | |_____________________________--------------------------------------------------^
[INFO] [stdout]      |                               |
[INFO] [stdout]      |                               this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]      |
[INFO] [stdout] note: value invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: value invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]     --> src/binary/mod.rs:227:25
[INFO] [stdout]      |
[INFO] [stdout]  227 |                         } else {
[INFO] [stdout]      |                         ^
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout]      = note: `--force-warn if-let-rescope` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]      |
[INFO] [stdout]  221 ~                         match shell.variables().get("COMMAND_NOT_FOUND").cloned()
[INFO] [stdout]  222 ~                         { Some(Value::Function(func)) => {
[INFO] [stdout]  223 |                             if let Err(why) = shell.execute_function(&func, &["ion", &command]) {
[INFO] [stdout]  224 |                                 eprintln!("ion: command not found handler: {}", why);
[INFO] [stdout]  225 |                             }
[INFO] [stdout]  226 ~                         } _ => {
[INFO] [stdout]  227 |                             eprintln!("ion: command not found: {}", command);
[INFO] [stdout]  228 ~                         }}
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]  --> src/binary/completer.rs
[INFO] [stdout] warning: `impl Iterator<Item = std::string::String> + 'a` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/binary/completer.rs:263:60
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn filename_completion<'a>(start: &'a str, path: &Path) -> impl Iterator<Item = String> + 'a {
[INFO] [stdout]     |                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/binary/completer.rs:263:50
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn filename_completion<'a>(start: &'a str, path: &Path) -> impl Iterator<Item = String> + 'a {
[INFO] [stdout]     |                                                  ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]     = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn filename_completion<'a>(start: &'a str, path: &Path) -> impl Iterator<Item = String> + 'a + use<'a> {
[INFO] [stdout]     |                                                                                              +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]  ::: src/binary/mod.rs
[INFO] [stderr]  ::: src/main.rs
[INFO] [stderr]   = cause: error: expected identifier
[INFO] [stderr]               --> src/binary/completer.rs:263:96
[INFO] [stderr]                |
[INFO] [stderr]            263 | fn filename_completion<'a>(start: &'a str, path: &Path) -> impl Iterator<Item = String> + 'a + use<'a> {
[INFO] [stderr]                |                                                                                                ^^^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: may only be used on expression, statement, or function
[INFO] [stderr]               --> src/binary/completer.rs:263:1
[INFO] [stderr]                |
[INFO] [stderr]            263 | / fn filename_completion<'a>(start: &'a str, path: &Path) -> impl Iterator<Item = String> + 'a + use<'a> {
[INFO] [stderr]            264 | |     let unescaped_start = unescape(start);
[INFO] [stderr]            265 | |
[INFO] [stderr]            266 | |     let mut split_start = unescaped_start.split('/');
[INFO] [stderr]            ...   |
[INFO] [stderr]            319 | | }
[INFO] [stderr]                | |_^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stderr]                --> src/binary/mod.rs:216:19
[INFO] [stderr]                 |
[INFO] [stderr]             215 |             let mut shell = self.shell.borrow_mut();
[INFO] [stderr]                 |                 ---------
[INFO] [stderr]                 |                 |
[INFO] [stderr]                 |                 `shell` calls a custom destructor
[INFO] [stderr]                 |                 `shell` will be dropped later as of Edition 2024
[INFO] [stderr]             216 |             match shell.on_command(cmd.bytes(), true) {
[INFO] [stderr]                 |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                 |                   |
[INFO] [stderr]                 |                   this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                 |                   up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]             249 |         }
[INFO] [stderr]                 |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                 |
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stderr]                 |
[INFO] [stderr]            1423 | impl Drop for String {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stderr]                 |
[INFO] [stderr]            2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `shell` invokes this custom destructor
[INFO] [stderr]                --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:2050:0
[INFO] [stderr]                 = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                 = warning: this changes meaning in Rust 2024
[INFO] [stderr]                 = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]                 = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stderr]                --> src/main.rs:280:31
[INFO] [stderr]                 |
[INFO] [stderr]             280 |             if let Err(err) = shell.execute_command(&mut reader) {
[INFO] [stderr]                 |                        ---    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                 |                        |      |
[INFO] [stderr]                 |                        |      this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                 |                        |      up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]                 |                        `err` calls a custom destructor
[INFO] [stderr]                 |                        `err` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]             283 |         }
[INFO] [stderr]                 |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                 |
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stderr]                 |
[INFO] [stderr]            1423 | impl Drop for String {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stderr]                 |
[INFO] [stderr]            2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `err` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stderr]                 |
[INFO] [stderr]            1423 | impl Drop for String {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `err` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stderr]                 |
[INFO] [stderr]            2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                 = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                 = warning: this changes meaning in Rust 2024
[INFO] [stderr]                 = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: aborting due to 2 previous errors; 2 warnings emitted
[INFO] [stderr] help: to report this as a bug, open an issue at https://github.com/rust-lang/rust/issues, quoting the full output of this command
[INFO] [stderr] help: to possibly apply more fixes, pass in the `--broken-code` flag
[INFO] [stderr] note: original diagnostics will follow:
[INFO] [stderr]    Migrating members/builtins-proc/tests/test.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating members/builtins-proc/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating benches/statement.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating src/lib/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/lib/shell/pipe_exec/job_control.rs (6 fixes)
[INFO] [stderr]        Fixed src/lib/shell/shell_expand.rs (2 fixes)
[INFO] [stderr]        Fixed src/lib/shell/mod.rs (3 fixes)
[INFO] [stderr]        Fixed src/lib/shell/flow_control.rs (1 fix)
[INFO] [stderr]        Fixed src/lib/shell/assignments.rs (12 fixes)
[INFO] [stderr]        Fixed src/lib/builtins/mod.rs (3 fixes)
[INFO] [stderr]        Fixed src/lib/builtins/source.rs (2 fixes)
[INFO] [stderr]        Fixed src/lib/expansion/pipelines.rs (4 fixes)
[INFO] [stderr]        Fixed src/lib/assignments/checker.rs (4 fixes)
[INFO] [stderr]        Fixed src/lib/shell/variables.rs (3 fixes)
[INFO] [stderr]        Fixed src/lib/shell/pipe_exec/mod.rs (4 fixes)
[INFO] [stderr]        Fixed src/lib/types.rs (1 fix)
[INFO] [stderr]        Fixed src/lib/expansion/mod.rs (8 fixes)
[INFO] [stderr]        Fixed src/lib/builtins/is.rs (1 fix)
[INFO] [stderr]        Fixed src/lib/shell/colors.rs (2 fixes)
[INFO] [stderr]        Fixed src/lib/expansion/methods/mod.rs (1 fix)
[INFO] [stderr]    Migrating members/ranges/src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/lib/shell/directory_stack.rs (4 fixes)
[INFO] [stderr]        Fixed src/lib/parser/pipelines.rs (35 fixes)
[INFO] [stderr]        Fixed src/lib/shell/flow.rs (15 fixes)
[INFO] [stderr]        Fixed src/lib/expansion/loops.rs (1 fix)
[INFO] [stderr]        Fixed src/lib/builtins/command_info.rs (1 fix)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/lib/builtins/mod.rs:283:11
[INFO] [stdout]      |
[INFO] [stdout]  269 | )]
[INFO] [stdout]      |  - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]  270 | pub fn source_sh(args: &[types::Str], _shell: &mut Shell<'_>) -> Status {
[INFO] [stdout]  271 |     let mut arg = match args.get(1) {
[INFO] [stdout]      |         -------
[INFO] [stdout]      |         |
[INFO] [stdout]      |         `arg` calls a custom destructor
[INFO] [stdout]      |         `arg` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  275 |     let temp = match Temp::new_file() {
[INFO] [stdout]      |         ----
[INFO] [stdout]      |         |
[INFO] [stdout]      |         `temp` calls a custom destructor
[INFO] [stdout]      |         `temp` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  283 |     match Command::new("sh")
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |           |
[INFO] [stdout]      |           this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |           up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]      |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout]      = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/sys/process/unix/common/cstring_array.rs:79:0
[INFO] [stdout] note: `arg` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `temp` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/mktemp-0.4.1/src/lib.rs:182:1
[INFO] [stdout]      |
[INFO] [stdout]  182 | impl Drop for Temp {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]      = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/lib/builtins/mod.rs:283:11
[INFO] [stdout]      |
[INFO] [stdout]  269 | )]
[INFO] [stdout]      |  - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]  270 | pub fn source_sh(args: &[types::Str], _shell: &mut Shell<'_>) -> Status {
[INFO] [stdout]  271 |     let mut arg = match args.get(1) {
[INFO] [stdout]      |         -------
[INFO] [stdout]      |         |
[INFO] [stdout]      |         `arg` calls a custom destructor
[INFO] [stdout]      |         `arg` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  283 |     match Command::new("sh")
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |           |
[INFO] [stdout]      |           this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |           up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]      |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout]      = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/sys/process/unix/common/cstring_array.rs:79:0
[INFO] [stdout] note: `arg` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/lib/expansion/methods/strings.rs:241:23
[INFO] [stdout]      |
[INFO] [stdout]  240 |                 let pattern = MethodArgs::new(self.pattern, expand).join(" ")?;
[INFO] [stdout]      |                     -------
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     `pattern` calls a custom destructor
[INFO] [stdout]      |                     `pattern` will be dropped later as of Edition 2024
[INFO] [stdout]  241 |                 match expand.array(variable, &Select::All) {
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^^^^^^^-----------^
[INFO] [stdout]      |                       |                       |
[INFO] [stdout]      |                       |                       this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]      |                       |                       up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]      |                       this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                       up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  249 |             }
[INFO] [stdout]      |             - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]      |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `pattern` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/lib/expansion/methods/strings.rs:334:41
[INFO] [stdout]     |
[INFO] [stdout] 334 |                       if let Some(elem) = MethodArgs::new(self.pattern, expand)
[INFO] [stdout]     |                                           -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |  _________________________________________this temporary value will be dropped at the end of the block
[INFO] [stdout]     | |
[INFO] [stdout] 335 | |                         .array()
[INFO] [stdout]     | |________________________________- a temporary with access to the borrow is created here ...
[INFO] [stdout] ...
[INFO] [stdout] 348 |                   } else {
[INFO] [stdout]     |                   - ... and the borrow might be used here, when that temporary is dropped and runs the destructor for type `impl Iterator<Item = small::String> + '_`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] help: consider adding semicolon after the expression so its temporaries are dropped sooner, before the local variables declared by the block are dropped
[INFO] [stdout]     |
[INFO] [stdout] 347 |                     };
[INFO] [stdout]     |                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/lib/expansion/mod.rs:208:23
[INFO] [stdout]      |
[INFO] [stdout]  206 |             let expansions = self.expand_string_no_glob(node)?;
[INFO] [stdout]      |                              ---------------------------------
[INFO] [stdout]      |                              |
[INFO] [stdout]      |                              this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                              `#1` will be dropped later as of Edition 2024
[INFO] [stdout]  207 |             for word in expansions {
[INFO] [stdout]      |                 ----    ----------
[INFO] [stdout]      |                 |       |
[INFO] [stdout]      |                 |       `iter` calls a custom destructor
[INFO] [stdout]      |                 |       `iter` will be dropped later as of Edition 2024
[INFO] [stdout]      |                 |       this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]      |                 |       `#2` will be dropped later as of Edition 2024
[INFO] [stdout]      |                 `word` calls a custom destructor
[INFO] [stdout]      |                 `word` will be dropped later as of Edition 2024
[INFO] [stdout]  208 |                 match parse_range(&word) {
[INFO] [stdout]      |                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]      |                       up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  212 |             }
[INFO] [stdout]      |             - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `iter` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2255:1
[INFO] [stdout]      |
[INFO] [stdout] 2255 | impl<A: Array> Drop for IntoIter<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `word` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/lib/expansion/mod.rs:300:16
[INFO] [stdout]      |
[INFO] [stdout]  296 |             let selection =
[INFO] [stdout]      |                 ---------
[INFO] [stdout]      |                 |
[INFO] [stdout]      |                 `selection` calls a custom destructor
[INFO] [stdout]      |                 `selection` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  300 |             Ok(expanded.into_iter().map(Into::into).select(&selection, len))
[INFO] [stdout]      |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                |
[INFO] [stdout]      |                this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]  301 |         } else {
[INFO] [stdout]      |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]      |
[INFO] [stdout] note: `selection` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/lib/shell/pipe_exec/mod.rs:191:15
[INFO] [stdout]     |
[INFO] [stdout] 191 |           match OpenOptions::new()
[INFO] [stdout]     |  _______________^
[INFO] [stdout] 192 | |             .create(true)
[INFO] [stdout] 193 | |             .write(true)
[INFO] [stdout] 194 | |             .append(output.append)
[INFO] [stdout] 195 | |             .truncate(!output.append)
[INFO] [stdout] 196 | |             .open(output.file.as_str())
[INFO] [stdout]     | |                                       ^
[INFO] [stdout]     | |                                       |
[INFO] [stdout]     | |_______________________________________this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                         up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 197 |           {
[INFO] [stdout] 198 |               Ok(file) => match output.from {
[INFO] [stdout]     |                  ----
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  `file` calls a custom destructor
[INFO] [stdout]     |                  `file` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 202 |                   RedirectFrom::Both => match file.try_clone() {
[INFO] [stdout]     |                                               ----------------
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                                               `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 224 |       }
[INFO] [stdout]     |       - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] note: `file` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/lib/shell/pipe_exec/mod.rs:409:15
[INFO] [stdout]      |
[INFO] [stdout]  407 |         let mut commands = prepare(pipeline)?.into_iter().peekable();
[INFO] [stdout]      |             ------------
[INFO] [stdout]      |             |
[INFO] [stdout]      |             `commands` calls a custom destructor
[INFO] [stdout]      |             `commands` will be dropped later as of Edition 2024
[INFO] [stdout]  408 |
[INFO] [stdout]  409 |         match commands.next() { Some(mut parent) => {
[INFO] [stdout]      |               ^^^^^^^^^^^^^^^
[INFO] [stdout]      |               |
[INFO] [stdout]      |               this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |               up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  499 |     }
[INFO] [stdout]      |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]      |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `commands` invokes this custom destructor
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] note: `commands` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/lib/shell/pipe_exec/mod.rs:527:19
[INFO] [stdout]     |
[INFO] [stdout] 512 |             let mut command = Command::new(&args[0].as_str());
[INFO] [stdout]     |                 -----------
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 `command` calls a custom destructor
[INFO] [stdout]     |                 `command` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 527 |             match command.spawn() {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 537 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout] note: `command` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/os/fd/owned.rs:196:0
[INFO] [stdout]     = note: `command` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `command` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/sys/process/unix/common/cstring_array.rs:79:0
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Iterator<Item = u8>` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:75
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                                                           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, these lifetimes are in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:131:6
[INFO] [stdout]     |
[INFO] [stdout] 131 | impl<'a> WordIterator<'a> {
[INFO] [stdout]     |      ^^
[INFO] [stdout] ...
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                         ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]     = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating benches/terminator.rs from 2021 edition to 2024
[INFO] [stderr] error: errors present after applying fixes to crate `ion`
[INFO] [stderr]  --> src/binary/completer.rs
[INFO] [stderr]  ::: src/binary/mod.rs
[INFO] [stderr]  ::: src/main.rs
[INFO] [stderr]   = cause: error: expected identifier
[INFO] [stderr]               --> src/binary/completer.rs:263:96
[INFO] [stderr]                |
[INFO] [stderr]            263 | fn filename_completion<'a>(start: &'a str, path: &Path) -> impl Iterator<Item = String> + 'a + use<'a> {
[INFO] [stderr]                |                                                                                                ^^^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: may only be used on expression, statement, or function
[INFO] [stderr]               --> src/binary/completer.rs:263:1
[INFO] [stderr]                |
[INFO] [stderr]            263 | / fn filename_completion<'a>(start: &'a str, path: &Path) -> impl Iterator<Item = String> + 'a + use<'a> {
[INFO] [stderr]            264 | |     let unescaped_start = unescape(start);
[INFO] [stderr]            265 | |
[INFO] [stderr]            266 | |     let mut split_start = unescaped_start.split('/');
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/binary/mod.rs:216:19
[INFO] [stdout]      |
[INFO] [stdout]  215 |             let mut shell = self.shell.borrow_mut();
[INFO] [stdout]      |                 ---------
[INFO] [stdout]      |                 |
[INFO] [stdout]      |                 `shell` calls a custom destructor
[INFO] [stdout]      |                 `shell` will be dropped later as of Edition 2024
[INFO] [stdout]  216 |             match shell.on_command(cmd.bytes(), true) {
[INFO] [stdout]      |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                   |
[INFO] [stdout]      |                   this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                   up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  250 |         }
[INFO] [stdout]      |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]      |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `shell` invokes this custom destructor
[INFO] [stdout]     --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:2050:0
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]      = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]            ...   |
[INFO] [stderr]            319 | | }
[INFO] [stderr]                | |_^
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stderr]                --> src/binary/mod.rs:216:19
[INFO] [stderr]                 |
[INFO] [stderr]             215 |             let mut shell = self.shell.borrow_mut();
[INFO] [stderr]                 |                 ---------
[INFO] [stderr]                 |                 |
[INFO] [stderr]                 |                 `shell` calls a custom destructor
[INFO] [stderr]                 |                 `shell` will be dropped later as of Edition 2024
[INFO] [stderr]             216 |             match shell.on_command(cmd.bytes(), true) {
[INFO] [stderr]                 |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                 |                   |
[INFO] [stderr]                 |                   this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                 |                   up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]             249 |         }
[INFO] [stderr]                 |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                 |
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stderr]                 |
[INFO] [stderr]            1423 | impl Drop for String {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stderr]                 |
[INFO] [stderr]            2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `shell` invokes this custom destructor
[INFO] [stderr]                --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/core/src/cell.rs:2050:0
[INFO] [stderr]                 = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                 = warning: this changes meaning in Rust 2024
[INFO] [stderr]                 = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]                 = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            warning: relative drop order changing in Rust 2024
[INFO] [stderr]                --> src/main.rs:280:31
[INFO] [stderr]                 |
[INFO] [stderr]             280 |             if let Err(err) = shell.execute_command(&mut reader) {
[INFO] [stderr]                 |                        ---    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                 |                        |      |
[INFO] [stderr]                 |                        |      this value will be stored in a temporary; let us call it `#1`
[INFO] [stderr]                 |                        |      up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stderr]                 |                        `err` calls a custom destructor
[INFO] [stderr]                 |                        `err` will be dropped later as of Edition 2024
[INFO] [stderr]            ...
[INFO] [stderr]             283 |         }
[INFO] [stderr]                 |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stderr]                 |
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stderr]                 |
[INFO] [stderr]            1423 | impl Drop for String {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `#1` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stderr]                 |
[INFO] [stderr]            2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `err` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stderr]                 |
[INFO] [stderr]            1423 | impl Drop for String {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]            note: `err` invokes this custom destructor
[INFO] [stderr]                --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stderr]                 |
[INFO] [stderr]            2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stderr]                 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]                 = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stderr]                 = warning: this changes meaning in Rust 2024
[INFO] [stderr]                 = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stderr]            
[INFO] [stderr]            
[INFO] [stderr]            error: aborting due to 2 previous errors; 2 warnings emitted
[INFO] [stderr] help: to report this as a bug, open an issue at https://github.com/rust-lang/rust/issues, quoting the full output of this command
[INFO] [stderr] help: to possibly apply more fixes, pass in the `--broken-code` flag
[INFO] [stderr] note: original diagnostics will follow:
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]     --> src/main.rs:280:31
[INFO] [stdout]      |
[INFO] [stdout]  280 |             if let Err(err) = shell.execute_command(&mut reader) {
[INFO] [stdout]      |                        ---    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                        |      |
[INFO] [stdout]      |                        |      this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]      |                        |      up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]      |                        `err` calls a custom destructor
[INFO] [stdout]      |                        `err` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout]  283 |         }
[INFO] [stdout]      |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]      |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `err` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `err` invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `if let` assigns a shorter lifetime since Edition 2024
[INFO] [stdout]     --> src/binary/mod.rs:221:28
[INFO] [stdout]      |
[INFO] [stdout]  221 |                           if let Some(Value::Function(func)) =
[INFO] [stdout]      |  ____________________________^
[INFO] [stdout]  222 | |                             shell.variables().get("COMMAND_NOT_FOUND").cloned()
[INFO] [stdout]      | |_____________________________--------------------------------------------------^
[INFO] [stdout]      |                               |
[INFO] [stdout]      |                               this value has a significant drop implementation which may observe a major change in drop order and requires your discretion
[INFO] [stdout]      |
[INFO] [stdout] note: value invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/smallvec-1.15.0/src/lib.rs:2145:1
[INFO] [stdout]      |
[INFO] [stdout] 2145 | impl<A: Array> Drop for SmallVec<A> {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: value invokes this custom destructor
[INFO] [stdout]     --> /opt/rustwide/cargo-home/git/checkouts/small-1581eb5681681989/4374ae3/src/string.rs:1423:1
[INFO] [stdout]      |
[INFO] [stdout] 1423 | impl Drop for String {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: the value is now dropped here in Edition 2024
[INFO] [stdout]     --> src/binary/mod.rs:227:25
[INFO] [stdout]      |
[INFO] [stdout]  227 |                         } else {
[INFO] [stdout]      |                         ^
[INFO] [stdout]      = warning: this changes meaning in Rust 2024
[INFO] [stdout]      = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-if-let-scope.html>
[INFO] [stdout]      = note: `--force-warn if-let-rescope` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: a `match` with a single arm can preserve the drop order up to Edition 2021
[INFO] [stdout]      |
[INFO] [stdout]  221 ~                         match shell.variables().get("COMMAND_NOT_FOUND").cloned()
[INFO] [stdout]  222 ~                         { Some(Value::Function(func)) => {
[INFO] [stdout]  223 |                             if let Err(why) = shell.execute_function(&func, &["ion", &command]) {
[INFO] [stdout]  224 |                                 eprintln!("ion: command not found handler: {}", why);
[INFO] [stdout]  225 |                             }
[INFO] [stdout]  226 ~                         } _ => {
[INFO] [stdout]  227 |                             eprintln!("ion: command not found: {}", command);
[INFO] [stdout]  228 ~                         }}
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `impl Iterator<Item = std::string::String> + 'a` will capture more lifetimes than possibly intended in edition 2024
[INFO] [stdout]    --> src/binary/completer.rs:263:60
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn filename_completion<'a>(start: &'a str, path: &Path) -> impl Iterator<Item = String> + 'a {
[INFO] [stdout]     |                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] note: specifically, this lifetime is in scope but not mentioned in the type's bounds
[INFO] [stdout]    --> src/binary/completer.rs:263:50
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn filename_completion<'a>(start: &'a str, path: &Path) -> impl Iterator<Item = String> + 'a {
[INFO] [stdout]     |                                                  ^
[INFO] [stdout]     = note: all lifetimes in scope will be captured by `impl Trait`s in edition 2024
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/rpit-lifetime-capture.html>
[INFO] [stdout]     = note: `--force-warn impl-trait-overcaptures` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn filename_completion<'a>(start: &'a str, path: &Path) -> impl Iterator<Item = String> + 'a + use<'a> {
[INFO] [stdout]     |                                                                                              +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 18s
[INFO] [stderr] crater-edition-check: builtins-proc v0.1.0 (/opt/rustwide/workdir/members/builtins-proc) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: ion-shell v1.0.0-alpha (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: ion-ranges v0.1.0 (/opt/rustwide/workdir/members/ranges) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: scopes v0.1.0 (/opt/rustwide/workdir/members/scopes-rs) updating edition from 2021 to 2024
[INFO] [stderr] crater-edition-check: types-rs v0.1.0 (/opt/rustwide/workdir/members/types-rs) updating edition from 2021 to 2024
[INFO] [stderr]    Compiling ion-shell v1.0.0-alpha (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling builtins-proc v0.1.0 (/opt/rustwide/workdir/members/builtins-proc)
[INFO] [stderr]     Checking types-rs v0.1.0 (/opt/rustwide/workdir/members/types-rs)
[INFO] [stderr]     Checking ion-ranges v0.1.0 (/opt/rustwide/workdir/members/ranges)
[INFO] [stderr]     Checking scopes v0.1.0 (/opt/rustwide/workdir/members/scopes-rs)
[INFO] [stdout] warning: unexpected `cfg` condition name: `fuzzing`
[INFO] [stdout]   --> src/lib/parser/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | #[cfg(fuzzing)]
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: expected names are: `docsrs`, `feature`, and `test` and 32 more
[INFO] [stdout]    = help: consider using a Cargo feature instead
[INFO] [stdout]    = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]             [lints.rust]
[INFO] [stdout]             unexpected_cfgs = { level = "warn", check-cfg = ['cfg(fuzzing)'] }
[INFO] [stdout]    = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(fuzzing)");` to the top of the `build.rs`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `fuzzing`
[INFO] [stdout]   --> src/lib/parser/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | #[cfg(fuzzing)]
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: expected names are: `docsrs`, `feature`, and `test` and 32 more
[INFO] [stdout]    = help: consider using a Cargo feature instead
[INFO] [stdout]    = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]             [lints.rust]
[INFO] [stdout]             unexpected_cfgs = { level = "warn", check-cfg = ['cfg(fuzzing)'] }
[INFO] [stdout]    = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(fuzzing)");` to the top of the `build.rs`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self.data` as immutable because it is also borrowed as mutable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:458:49
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 458 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                 ^^^^^^^^^ immutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 461 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- mutable borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:458:66
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 458 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                                  ^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 461 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:459:33
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 459 |                                 self.read += 1;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] 460 |                                 start = self.read;
[INFO] [stdout] 461 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self.data` as immutable because it is also borrowed as mutable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:495:49
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 495 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                 ^^^^^^^^^ immutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 499 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- mutable borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:495:66
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 495 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                                  ^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 499 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:496:33
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 496 |                                 self.read += 1;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 499 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:525:25
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] 448 |                     let mut depth = 0;
[INFO] [stdout] 449 |                     while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                 -------- borrow later used here
[INFO] [stdout] ...
[INFO] [stdout] 525 |                         self.read += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self.data` as immutable because it is also borrowed as mutable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:614:49
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 614 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                 ^^^^^^^^^ immutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 617 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- mutable borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:614:66
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 614 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                                  ^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 617 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:615:33
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 615 |                                 self.read += 1;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] 616 |                                 start = self.read;
[INFO] [stdout] 617 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self.data` as immutable because it is also borrowed as mutable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:654:49
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 654 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                 ^^^^^^^^^ immutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 658 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- mutable borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:654:66
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 654 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                                  ^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 658 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:655:33
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 655 |                                 self.read += 1;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 658 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:678:25
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] 604 |                     let mut depth = 0;
[INFO] [stdout] 605 |                     while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                 -------- borrow later used here
[INFO] [stdout] ...
[INFO] [stdout] 678 |                         self.read += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0502, E0503.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0502`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ion-shell` (lib) due to 14 previous errors; 1 warning emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0502]: cannot borrow `*self.data` as immutable because it is also borrowed as mutable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:458:49
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 458 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                 ^^^^^^^^^ immutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 461 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- mutable borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:458:66
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 458 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                                  ^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 461 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:459:33
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 459 |                                 self.read += 1;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] 460 |                                 start = self.read;
[INFO] [stdout] 461 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self.data` as immutable because it is also borrowed as mutable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:495:49
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 495 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                 ^^^^^^^^^ immutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 499 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- mutable borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:495:66
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 495 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                                  ^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 499 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:496:33
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 496 |                                 self.read += 1;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 499 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:525:25
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] 448 |                     let mut depth = 0;
[INFO] [stdout] 449 |                     while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                 -------- borrow later used here
[INFO] [stdout] ...
[INFO] [stdout] 525 |                         self.read += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:447:40
[INFO] [stdout]     |
[INFO] [stdout] 447 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self.data` as immutable because it is also borrowed as mutable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:614:49
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 614 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                 ^^^^^^^^^ immutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 617 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- mutable borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:614:66
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 614 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                                  ^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 617 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:615:33
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 615 |                                 self.read += 1;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] 616 |                                 start = self.read;
[INFO] [stdout] 617 |                                 while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `*self.data` as immutable because it is also borrowed as mutable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:654:49
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 654 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                 ^^^^^^^^^ immutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 658 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- mutable borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:654:66
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 654 |                                 let variable = &self.data[start..self.read];
[INFO] [stdout]     |                                                                  ^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 658 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:655:33
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] ...
[INFO] [stdout] 655 |                                 self.read += 1;
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout] ...
[INFO] [stdout] 658 |                                     let _ = iterator.next();
[INFO] [stdout]     |                                             -------- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0503]: cannot use `self.read` because it was mutably borrowed
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:678:25
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ---- `*self` is borrowed here
[INFO] [stdout] 604 |                     let mut depth = 0;
[INFO] [stdout] 605 |                     while let Some(character) = iterator.next() {
[INFO] [stdout]     |                                                 -------- borrow later used here
[INFO] [stdout] ...
[INFO] [stdout] 678 |                         self.read += 1;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^ use of borrowed `*self`
[INFO] [stdout]     |
[INFO] [stdout] note: this call may capture more lifetimes than intended, because Rust 2024 has adjusted the `impl Trait` lifetime capture rules
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:603:40
[INFO] [stdout]     |
[INFO] [stdout] 603 |                     let mut iterator = self.trim_left_spaces(iterator);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: you could use a `use<...>` bound to explicitly specify captures, but argument-position `impl Trait`s are not nameable
[INFO] [stdout]    --> src/lib/expansion/words/mod.rs:574:46
[INFO] [stdout]     |
[INFO] [stdout] 574 |     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: use the precise capturing `use<...>` syntax to make the captures explicit
[INFO] [stdout]     |
[INFO] [stdout] 574 -     fn trim_left_spaces(&mut self, iterator: impl Iterator<Item = u8>) -> impl Iterator<Item = u8> {
[INFO] [stdout] 574 +     fn trim_left_spaces<T: Iterator<Item = u8>>(&mut self, iterator: T) -> impl Iterator<Item = u8> + use<T> {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0502, E0503.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0502`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ion-shell` (lib test) due to 14 previous errors; 1 warning emitted
[INFO] running `Command { std: "docker" "inspect" "07709c9708b60d39fdee0a1adda575ce3cb3a59a9479f5428278a53680eb08eb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "07709c9708b60d39fdee0a1adda575ce3cb3a59a9479f5428278a53680eb08eb", kill_on_drop: false }`
[INFO] [stdout] 07709c9708b60d39fdee0a1adda575ce3cb3a59a9479f5428278a53680eb08eb
